//
// Created by PC on 2023/12/20.
// GESP 2023.12 五级真题 1
/*
OJ: https://www.luogu.com.cn/problem/B3929
 没通过
 * 试题名称：小杨的幸运数
时间限制：1.0 s
内存限制：128.0 MB
3.1.1 问题描述
小杨认为，所有大于等于a的完全平方数都是他的超级幸运数。
小杨还认为，所有超级幸运数的倍数都是他的幸运数。自然地，小杨的所有超级幸运数也都是幸运数。
对于一个非幸运数，小杨规定，可以将它一直 +1，直到它变成一个幸运数。我们把这个过程叫做幸运化。例如，如
果a=4 ，那么 4是最小的幸运数，而1 不是，但我们可以连续对 1做3 次+1 操作，使其变为 4，所以我们可以
说， 1幸运化后的结果是 4。
现在，小样给出 N个数，请你首先判断它们是不是幸运数；接着，对于非幸运数，请你将它们幸运化。
3.1.2 输入描述
第一行 2 个正整数 a,N。
接下来 N行，每行一个正整数 x，表示需要判断（幸运化）的数。
3.1.3 输出描述
输出 N行，对于每个给定的 x，如果它是幸运数，请输出 lucky ，否则请输出将其幸运化后的结果。
3.1.5 样例输入 1
2 4
1
4
5
9
3.1.6 样例输出 1
4
lucky
8
lucky
3.1.7 样例解释
 1 虽然是完全平方数，但它小于 a，因此它并不是超级幸运数，也不是幸运数。将其进行 3次+1 操作后，最终得到
幸运数 4。
4是幸运数，因此直接输出 lucky 。
5不是幸运数，将其进行3 次+1 操作后，最终得到幸运数 8。
9是幸运数，因此直接输出 lucky 。
3.1.8 样例输入 2
 16 11
 1
 2
 3
 8
 16
 32
 64
 128
 256
 512
 1024
3.1.9 样例输出 2
 16
 16
 16
 16
 lucky
 lucky
 lucky
 lucky
 lucky
 lucky
 lucky
3.1.10 数据规模
对于30%的测试点，保证 a，x<=100,N<=100 。
对于60%的测试点，保证 a,x <=10^6。
对于所有测试点，保证a<=1,000,001 ；保证 N<=2E5；保证1<=x<=1,000,001 。
 * */
//


#include <iostream>
#include <vector>

using namespace std;

int find(int target,vector<int> &arr)
{
    for (int i = 0; i < arr.size(); ++i)
    {
        // 是完全平方数的话 返回完全平方数的开方
        if (target==arr[i])
            return i;
        // 不是完全平方数的话, 返回下一个完全平方数的开方
        if (target<arr[i])
            return i;
    }
    return -1;
}

int main()
{
    vector<int> l;
    // 提前计算出超级幸运数(完全平方数)
    // 因为a<=10000001,所以需要计算的最大的超级幸运数是1001^2
    for (int i = 0; i <= 1001; ++i)
        l.push_back(i*i);
//    cout<<find(512,l)<<endl;
    int a,n,x;
    a=2,n=4;
    cin>>a>>n;
    while(n--)
    {
        cin>>x;
        // t*t大于等于x
        int t =find(x,l);
        if (x<a)
            cout<<a<<endl;
        // 是完全平方数
        else if(x==t*t)
            cout<<"lucky"<<endl;
        // 不是完全平方数
        else
        {
            // x的下一个完全平方数与大于x的完全平方数的倍数,小的那个就是x幸运化的结果
            cout<<l[t]<<endl;
        }
    }
    return 0;
}